home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Collection of Tools & Utilities
/
Collection of Tools and Utilities.iso
/
c
/
cppmatrx.zip
/
MATRIX.ZIP
/
MATRIXC.OLD
< prev
Wrap
Text File
|
1991-01-27
|
3KB
|
155 lines
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <iostream.h>
#include <stdarg.h>
class matrix {
int **matrix_data;
size_t matrix_size;
public:
matrix (size_t vector_length, ...);
~matrix (void);
size_t get_matrix_size (void);
void print_matrix (void);
int elem (size_t i, size_t j);
void put_value (size_t i, size_t j, int value);
friend matrix operator+( matrix&, matrix&);
void operator= (matrix &);
};
matrix::matrix (size_t matrix_length, ...)
{
va_list argptr;
int value;
int row, column;
va_start (argptr, dummy_arg);
// allocate space for the new matrix
matrix_size = matrix_length;
matrix_data = (int **) calloc (matrix_size, sizeof (int));
for (row = 0; row < matrix_size; row++)
matrix_data [row] = (int *) calloc (matrix_size, sizeof (int));
row = column = 0;
while ((value = va_arg (argptr, int)) && ( row < matrix_size)) {
put_value (row, column, value);
if (++column == matrix_size) {
column = 0;
row++;
}
}
// initialize the rest of the array
va_end (argptr);
cout << "\nSuccessfully created object Matrix.\n";
}
matrix::~matrix (void)
{
free (matrix_data);
matrix_size = 0;
cout << "\nObject Matrix destroyed.\n";
}
size_t matrix::get_matrix_size (void)
{
return matrix_size;
}
void matrix::print_matrix (void)
{
size_t i, j;
cout << '\n';
for (i = 0; i < matrix_size; i++) {
for (j = 0; j < matrix_size; j++)
cout << elem (i,j) << ' ';
cout << '\n';
}
cout << '\n';
}
int matrix::elem (size_t i, size_t j)
{
return *(*(matrix_data+i)+j);
}
void matrix::put_value (size_t i, size_t j, int value)
{
*(*(matrix_data+i)+j) = value;
}
matrix operator+ (matrix &m1, matrix &m2)
{
matrix temp (m1.matrix_size,1,0);
size_t i, j;
for (i = 0; i < temp.matrix_size; i++)
for (j = 0; j < temp.matrix_size; j++)
temp.put_value (i, j, m1.elem (i,j) + m2.elem (i,j));
return temp;
}
void matrix::operator= (matrix &m)
{
size_t i,j;
int value;
int row, column;
matrix_size = m.matrix_size;
for (i = 0; i < matrix_size; i++)
for (j = 0; j < matrix_size; j++)
put_value (i,j, m.elem (i,j));
}
int main (void)
{
matrix my_matrix (3,1,2,3,
4,5,6,
7,8,9);
matrix your_matrix (3,1,1,1,
1,1,1,
1,1,1);
matrix our_matrix (3,1,0);
cout << "\nHello world\n\n";
my_matrix.print_matrix ();
your_matrix.print_matrix ();
cout << "\n--------------------------------------\n";
(my_matrix+your_matrix).print_matrix ();
our_matrix.print_matrix ();
my_matrix.print_matrix ();
your_matrix.print_matrix ();
getch ();
return 0;
}